From: Paul Donald Date: Fri, 25 Apr 2025 15:17:51 +0000 (+0200) Subject: luci-base: override the load() function to return boolean for FlagValue X-Git-Url: http://git.openwrt.org/%22https:/collectd.org//%22/%22https:/collectd.org/%22?a=commitdiff_plain;h=1355a6fa253d765140f5571354939d2e93e6d967;p=project%2Fluci.git luci-base: override the load() function to return boolean for FlagValue In the underlying uci system, all variables are effectively strings, so for those configuration values which serve as 'boolean' flags, we need to coerce the various forms into a real boolean. Only the following string values result in true: 1|on|true|yes|enabled. Otherwise, false. Checkboxes now fill correctly. "Unchanged" configurations may write changed values as the Flag values are coerced to '1' or '0' on write, but the configuration behaviour remains synonymous. Signed-off-by: Paul Donald --- diff --git a/modules/luci-base/htdocs/luci-static/resources/form.js b/modules/luci-base/htdocs/luci-static/resources/form.js index c9af17f1b3..cccfcdda92 100644 --- a/modules/luci-base/htdocs/luci-static/resources/form.js +++ b/modules/luci-base/htdocs/luci-static/resources/form.js @@ -4199,6 +4199,19 @@ const CBIFlagValue = CBIValue.extend(/** @lends LuCI.form.FlagValue.prototype */ * @default 'ℹ️'; */ + /** + * Coerce the various forms of a 'boolean' string into a true/false value. + * + * @override + */ + load() { + // + let load = this.super('load', arguments); + if (typeof(load) == 'string') + load = ['1', 'on', 'true', 'yes', 'enabled'].includes(load.toLowerCase()); + return load; + }, + /** @private */ renderWidget(section_id, option_index, cfgvalue) { let tooltip = null;